package com.dwy2002.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.dwy2002.common.Result;
import com.dwy2002.pojo.dto.users.PasswordLoginDTO;
import com.dwy2002.pojo.dto.users.RegisterDTO;
import com.dwy2002.pojo.dto.users.UpdateNicknameDTO;
import com.dwy2002.pojo.dto.users.UpdatePasswordDTO;
import com.dwy2002.pojo.po.users.Users;
import com.dwy2002.pojo.vo.users.UserinfoVO;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;

/**
 * @author 杜伟毅
 * @version 1.0
 * @since 2025/1/10
 */
public interface IUsersService extends IService<Users> {
    /**
     * 登录
     *
     * @param userinfo 登录信息
     * @author 杜伟毅
     * @since 2024/1/11 0002 14:19
     */
    Result<String> login(PasswordLoginDTO userinfo);

    /**
     * 注册
     *
     * @param userinfo 注册信息
     * @author 杜伟毅
     * @since 2024/1/11 0002 14:19
     */
    Result<Void> register(RegisterDTO userinfo);

    /**
     * 获取用户信息
     *
     * @author 杜伟毅
     * @since 2024/1/11 21:11
     */
    Result<UserinfoVO> getUserInfo();

    /**
     * 修改密码
     *
     * @param userinfo 修改密码类
     * @author 杜伟毅
     * @since 2025/1/12 0012 16:06
     */
    Result<Void> updatePassword(UpdatePasswordDTO userinfo);

    /**
     * 修改昵称
     *
     * @param userinfo 用户的修改信息
     * @author 杜伟毅
     * @since 2025/1/18 0018 16:36
     */
    Result<Void> updateNickname(UpdateNicknameDTO userinfo);

    /**
     * 修改头像
     *
     * @param oldAvatar 旧头像的地址
     * @param avatar    新头像的文件
     * @author 杜伟毅
     * @since 2025/1/19 0019 12:43
     */
    Result<Void> updateAvatar(String oldAvatar, MultipartFile avatar) throws IOException;

    /**
     * 校验手机号是否存在
     *
     * @param phone 手机号
     * @author 杜伟毅
     * @since 2024/1/11 0012 15:06
     */
    boolean isPhoneNumberExist(String phone);

    /**
     * 获取昵称
     *
     * @param id 用户id
     * @return 返回对应的昵称
     * @author 杜伟毅
     * @since 2025/7/15 0015 16:33
     */
    String getNickname(String id);
}
